Leadtools.Dicom Namespace > DicomDataSet Class > SetModalityLut Method : SetModalityLut(DicomModalityLutAttributes,Int32[]) Method |
public void SetModalityLut( DicomModalityLutAttributes attributes, int[] data )
'Declaration Public Overloads Sub SetModalityLut( _ ByVal attributes As DicomModalityLutAttributes, _ ByVal data() As Integer _ )
'Usage Dim instance As DicomDataSet Dim attributes As DicomModalityLutAttributes Dim data() As Integer instance.SetModalityLut(attributes, data)
public void SetModalityLut( DicomModalityLutAttributes attributes, int[] data )
public void setModalityLut(DicomModalityLutAttributes attributes, int[]data)
function Leadtools.Dicom.DicomDataSet.SetModalityLut(DicomModalityLutAttributes,Int32[])( attributes , data )
public: void SetModalityLut( DicomModalityLutAttributes^ attributes, array<int>^ data )
If you are trying to set the "Rescale Intercept" (0028,1052) and "Rescale Slope" (0028,1053), set IsRescaleSlopeIntercept to true, and populate RescaleIntercept and DicomModalityLutAttributes.RescaleSlope with the new values. You can also populate RescaleType if you want to set "Rescale Type" (0028,1054).
If you are trying to set the elements under "Modality LUT Sequence", set IsModalityLutSequence to true, and populate FirstStoredPixelValueMapped, NumberOfEntries, EntryBits, and LutType. In this case, data should hold the "LUT Data" (0028,3006).
Imports Leadtools Imports Leadtools.Dicom Public Sub TestSetModalityLut() Dim dicomFileName As String = Path.Combine(LEAD_VARS.ImagesDir, "IMAGE3.dcm") 'Make sure to initialize the DICOM engine, this needs to be done only once 'In the whole application DicomEngine.Startup() Dim ds As DicomDataSet = New DicomDataSet() Using (ds) 'Load DICOM File ds.Load(dicomFileName, DicomDataSetLoadFlags.None) Dim modalityLutAttributes As DicomModalityLutAttributes = New DicomModalityLutAttributes() 'No Modality LUT Sequence (0028,3000) modalityLutAttributes.IsModalityLutSequence = False 'Yes there is a rescale slope and intercept modalityLutAttributes.IsRescaleSlopeIntercept = True modalityLutAttributes.RescaleIntercept = -128.0 modalityLutAttributes.RescaleSlope = 1.0 modalityLutAttributes.RescaleType = "UNSPECIFIED" ' Delete the existing modality LUT, ' although we don't have to ! ds.DeleteModalityLut() 'Set rescale slope and intercept ds.SetModalityLut(modalityLutAttributes, Nothing) ds.Save(Path.Combine(LEAD_VARS.ImagesDir, "MLUT.dcm"), DicomDataSetSaveFlags.None) End Using DicomEngine.Shutdown() End Sub Public NotInheritable Class LEAD_VARS Public Const ImagesDir As String = "C:\Users\Public\Documents\LEADTOOLS Images" End Class
using Leadtools; using Leadtools.Dicom; public void TestSetModalityLut() { string dicomFileName = Path.Combine(LEAD_VARS.ImagesDir, "IMAGE3.dcm"); //Make sure to initialize the DICOM engine, this needs to be done only once //In the whole application DicomEngine.Startup(); using (DicomDataSet ds = new DicomDataSet()) { //Load DICOM File ds.Load(dicomFileName, DicomDataSetLoadFlags.None); DicomModalityLutAttributes modalityLutAttributes = new DicomModalityLutAttributes(); //No Modality LUT Sequence (0028,3000) modalityLutAttributes.IsModalityLutSequence = false; //Yes there is a rescale slope and intercept modalityLutAttributes.IsRescaleSlopeIntercept = true; modalityLutAttributes.RescaleIntercept = -128.0; modalityLutAttributes.RescaleSlope = 1.0; modalityLutAttributes.RescaleType = "UNSPECIFIED"; // Delete the existing modality LUT, // although we don't have to ! ds.DeleteModalityLut(); //Set rescale slope and intercept ds.SetModalityLut(modalityLutAttributes, null); ds.Save(Path.Combine(LEAD_VARS.ImagesDir, "MLUT.dcm"), DicomDataSetSaveFlags.None); } DicomEngine.Shutdown(); } static class LEAD_VARS { public const string ImagesDir = @"C:\Users\Public\Documents\LEADTOOLS Images"; }
using Leadtools.Dicom.Constants; using Leadtools; using Leadtools.Dicom; public async Task TestSetModalityLut() { //Make sure to initialize the DICOM engine, this needs to be done only once //In the whole application DicomEngine.Startup(); using (DicomDataSet ds = new DicomDataSet()) { //Load DICOM File string filePath = @"Assets\IMAGE3.dcm"; StorageFile file = await Tools.AppInstallFolder.GetFileAsync(filePath); ILeadStream stream = LeadStreamFactory.Create(file); bool success = await ds.LoadAsync(stream, DicomDataSetLoadFlags.None); Debug.Assert(success); DicomModalityLutAttributes modalityLutAttributes = new DicomModalityLutAttributes(); //No Modality LUT Sequence (0028,3000) modalityLutAttributes.IsModalityLutSequence = false; //Yes there is a rescale slope and intercept modalityLutAttributes.IsRescaleSlopeIntercept = true; modalityLutAttributes.RescaleIntercept = -128.0; modalityLutAttributes.RescaleSlope = 1.0; modalityLutAttributes.RescaleType = "UNSPECIFIED"; // Delete the existing modality LUT, // although we don't have to ! ds.DeleteModalityLut(); //Set rescale slope and intercept ds.SetModalityLut(modalityLutAttributes, null); string dicomFileNameOutput = "MLUT.dcm"; StorageFile saveFile = await Tools.AppLocalFolder.CreateFileAsync(dicomFileNameOutput); ILeadStream streamOutput = LeadStreamFactory.Create(saveFile); using (IDisposable disposableOUT = streamOutput as IDisposable) { await ds.SaveAsync(streamOutput, DicomDataSetSaveFlags.None); } } DicomEngine.Shutdown(); }
using Leadtools; using Leadtools.Dicom; using Leadtools.Examples; public void TestSetModalityLut(Stream dicomStream, Stream outputStream) { //Make sure to initialize the DICOM engine, this needs to be done only once //In the whole application DicomEngine.Startup(); using (DicomDataSet ds = new DicomDataSet()) { //Load DICOM File ds.Load(dicomStream, DicomDataSetLoadFlags.None); DicomModalityLutAttributes modalityLutAttributes = new DicomModalityLutAttributes(); //No Modality LUT Sequence (0028,3000) modalityLutAttributes.IsModalityLutSequence = false; //Yes there is a rescale slope and intercept modalityLutAttributes.IsRescaleSlopeIntercept = true; modalityLutAttributes.RescaleIntercept = -128.0; modalityLutAttributes.RescaleSlope = 1.0; modalityLutAttributes.RescaleType = "UNSPECIFIED"; // Delete the existing modality LUT, // although we don't have to ! ds.DeleteModalityLut(); //Set rescale slope and intercept ds.SetModalityLut(modalityLutAttributes, null); ds.Save(outputStream, DicomDataSetSaveFlags.None); } DicomEngine.Shutdown(); }
Imports Leadtools Imports Leadtools.Dicom Public Sub TestSetModalityLut(ByVal dicomStream As Stream, ByVal outputStream As Stream) 'Make sure to initialize the DICOM engine, this needs to be done only once 'In the whole application DicomEngine.Startup() Using ds As DicomDataSet = New DicomDataSet() 'Load DICOM File ds.Load(dicomStream, DicomDataSetLoadFlags.None) Dim modalityLutAttributes As DicomModalityLutAttributes = New DicomModalityLutAttributes() 'No Modality LUT Sequence (0028,3000) modalityLutAttributes.IsModalityLutSequence = False 'Yes there is a rescale slope and intercept modalityLutAttributes.IsRescaleSlopeIntercept = True modalityLutAttributes.RescaleIntercept = -128.0 modalityLutAttributes.RescaleSlope = 1.0 modalityLutAttributes.RescaleType = "UNSPECIFIED" ' Delete the existing modality LUT, ' although we don't have to ! ds.DeleteModalityLut() 'Set rescale slope and intercept ds.SetModalityLut(modalityLutAttributes, Nothing) ds.Save(outputStream, DicomDataSetSaveFlags.None) End Using DicomEngine.Shutdown() End Sub